home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
pascal
/
zindent7.zip
/
ZINKEYDB.INC
< prev
next >
Wrap
Text File
|
1987-03-30
|
4KB
|
191 lines
(****************************************************)
(* Include File *)
(* KeyDB.INC, v. 0900pm, wed, 25.Mar.87, Glen Ellis *)
(****************************************************)
(*
(* parameters sent:
(*
(* (OutLine, IndentPos, IndentNum , LenMax, MarkWrite );
(* SIP SIN SLM SMW
(*
(* IF CASE WHILE counters :
(* SLI, SLC, SLW
(*
(* dBASE-II traps first four characters of Keywords,
(* so parse algorithm here is simple.
(*
(* pINDENT() located in ZinSTR.inc
(*
(**)
(*--------------------------------------------------------------------------*)
procedure pKEYDB( var kLINE : THEstr ; var kIPOS : nbr; kINUM, kLenMax :nbr;
var KMwrite : lgc ; var kLI, kLC, kLW : nbr);
(* also, uses SysComment
(*
(* requires STRING.INC library of string functions
(* all are var in order to allow sending back altered values
(* kLINE := OutLine
(* kIPOS := indentpos = current indent position
(* kINUM := indentnum = length of indent group
(* KMwrite := KMwrite = controls write to disk
(**)
var
(* local memvars *)
wkLINE : THEstr;
KMark : lgc;
x,y,z : nbr;
(*--------------------------------------------------------*)
begin (* P *)
(* Trim Left Spaces, prep for margin adjusted Pad-Left *)
(* Trim Right Spaces, we will not Pad-Right *)
pTRIMLR(kLINE);
(* blank line *)
IF SysVertiate
then
IF (kline = ' ') or (kline = '') then kLINE := '*';
(* Create Working Line *)
wkLINE := kLINE;
(* init *)
KMark := false;
KMwrite := true;
(* convert working line to all caps *)
pAllCaps(wkLINE);
(*-------------------------------*)
(* check for pos() of pKEYWORDs *)
(*---------*)
(* Comment *)
IF (pos('*',wkLINE) = 1) or (length(wkLINE) = 0)
then
begin
IF SysComment then
begin
pINDENT(kLINE,kIPOS,kLenMax);
end
ELSE
begin
KMwrite := false;
end;
KMark := true;
end;
(*----*)
(* IF *)
IF pos('IF',wkLINE) = 1
then
begin
pINDENT(kLINE,kIPOS,kLenMax);
kIPOS := kIPOS + kINUM;
KLI := KLI + 1;
KMark := true;
end;
(* ELSE *)
IF pos('ELSE',wkLINE) = 1
then
begin
kIPOS := kIPOS - kINUM;
pINDENT(kLINE,kIPOS,kLenMax);
kIPOS := kIPOS + kINUM;
KMark := true;
end;
(* ENDIF *)
IF pos('ENDI',wkLINE) = 1 then
begin
KLI := KLI -1;
kIPOS := kIPOS - kINUM;
pINDENT(kLINE,kIPOS,kLenMax);
KMark := true;
end;
(*---------*)
(* DO CASE *)
IF pos('DO CASE',wkLINE) = 1
then
begin
pINDENT(kLINE,kIPOS,kLenMax);
KLC := KLC + 1;
kIPOS := kIPOS + kINUM + kINUM;
KMark := true;
end;
(* CASE OTHERWISE *)
IF pos('CASE',wkLINE) or pos('OTHE',wkLINE) = 1
then
begin
kIPOS := kIPOS - kINUM;
pINDENT(kLINE,kIPOS,kLenMax);
kIPOS := kIPOS + kINUM;
KMark := true;
end;
(* ENDCASE *)
IF pos('ENDC',wkLINE) = 1
then
begin
KLC := KLC -1;
kIPOS := kIPOS -kINUM -kINUM;
pINDENT(kLINE,kIPOS,kLenMax);
KMark := true;
end;
(*----------*)
(* DO WHILE *)
IF pos('DO WHIL',wkLINE) = 1
then
begin
pINDENT(kLINE,kIPOS,kLenMax);
KLW := KLW + 1;
kIPOS := kIPOS + kINUM;
KMark := true;
end;
(* ENDDO *)
IF pos('ENDD',wkLINE) = 1
then
begin
KLW := KLW -1;
kIPOS := kIPOS - kINUM;
pINDENT(kLINE,kIPOS,kLenMax);
KMark := true;
end;
(*----------------*)
(* none of above *)
IF not(KMark)
then
begin
(* left pad current kIPOS count *)
pINDENT(kLINE,kIPOS,kLenMax);
end;
end; (* proc *)
(********************************************************************)
(*<<<>>>*)